using System;

namespace Sedna.Core.Controller
{
	public interface ISessionWrapper
	{
		/// <summary>
		/// Gets or sets value to the session. 
		///
		/// Affects only those values, that was set by pages, that have identical 
		/// SessionKey with the current page. 
		/// </summary>
		object this[object index]
		{
			get;
			set;
		}

		/// <summary>
		/// Clears all session values, that relate to current SessionKey, i.e.
		/// to current page & pages with the same SessionKey.
		/// </summary>
		void Clear();

		/// <summary>
		/// Removes value from the session. 
		/// 
		/// Affects only those values, that was set by pages, that have identical 
		/// SessionKey with the current page. 
		/// </summary>
		/// <param name="key">key of the value to be removed from session</param>
		void Remove(object key);
	}
}
